//
//  CacheModule.m
//  WeexEros
//
//  Created by 侍晓明 on 2019/3/2.
//  Copyright © 2019 benmu. All rights reserved.
//

#import "CacheModule.h"
#import <WeexPluginLoader/WeexPluginLoader.h>

// 第一个参数为暴露给 js 端 Module 的名字，
// 第二个参数为你 Module 的类名
WX_PlUGIN_EXPORT_MODULE(CacheModule, CacheModule)

@implementation CacheModule

@synthesize weexInstance;

// 将方法暴露出去
WX_EXPORT_METHOD(@selector(getCachesSize:))
WX_EXPORT_METHOD(@selector(clearCaches:))

// 实现 Module 方法
-  (void)getCachesSize:(WXModuleCallback)callback
{
    if(callback){
        CGFloat size = [self getCacheSize];
        NSString *sizeStr = [[NSString stringWithFormat:@"%.2f",size] stringByAppendingString:@"m"];
        callback(sizeStr);
    }
    
}

-  (void)clearCaches:(WXModuleCallback)callback
{
    if(callback){
        [self cleanCache];
        NSDictionary *data = nil;
        data = @{@"result": @"success"};
        callback(data);
    }
    
}

-(CGFloat) getCacheSize
{
    //获取文件管理器对象
    NSFileManager * fileManger = [NSFileManager defaultManager];
    
    //获取缓存沙盒路径
    NSString * cachePath =  [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    
    //拼接缓存文件文件夹路径
    NSString * fileCachePath = [cachePath stringByAppendingPathComponent:@"/"];
    
    //将缓存文件夹路径赋值给成员属性(后面删除缓存文件时需要用到)
    self.fileCachePath = fileCachePath;
    
    //获取到该缓存目录下的所有子文件（只是文件名并不是路径，后面要拼接）
    NSArray * subFilePath = [fileManger subpathsAtPath:fileCachePath];
    
    //先定义一个缓存目录总大小的变量
    NSInteger fileTotalSize = 0;
    
    for (NSString * fileName in subFilePath)
    {
        //拼接文件全路径（注意：是文件）
        NSString * filePath = [fileCachePath stringByAppendingPathComponent:fileName];
        
        //获取文件属性
        NSDictionary * fileAttributes = [fileManger attributesOfItemAtPath:filePath error:nil];
        
        //根据文件属性判断是否是文件夹（如果是文件夹就跳过文件夹，不将文件夹大小累加到文件总大小）
        if ([fileAttributes[NSFileType] isEqualToString:NSFileTypeDirectory]) continue;
        
        //获取单个文件大小,并累加到总大小
        fileTotalSize += [fileAttributes[NSFileSize] integerValue];
    }
    
    //将字节大小转为MB，然后传出去
    return fileTotalSize/1000.0/1000;
}

//清除缓存
-(void) cleanCache
{
    //删除缓存目录下所有缓存文件
    [[NSFileManager defaultManager] removeItemAtPath:self.fileCachePath error:nil];
}


@end

